$(function(){
    $('.nav-web>li').mouseover(function(event) {
        $(this).find(".sub-menu").stop();
        $(this).find(".sub-menu").slideDown();

    }).mouseout(function(event) {
        $(this).find(".sub-menu").stop();
        $(this).find(".sub-menu").slideUp();
    });

    $('.pagination').each(function(index,element){
        var urlStr = getUrlArgStr();
        var path = location.pathname;
        var url='';
        if(urlStr==''){
            url=path+'?';
        }else{
            url=path+"?"+urlStr;
        }
        var _el=$(element)
        var pagedata = _el.data('json');
        console.log(pagedata);
        var str='';
        str+='<li><a href="#" aria-label="Previous"><span aria-hidden="true">«</span></a></li>';
        if(pagedata.last_page<=6){
            for($i=1;$i<=pagedata.last_page;$i++){
                if($i==pagedata.current_page){
                    str+='<li class="active"><a href="#">'+$i+'</a></li>';
                }else{
                    str+='<li><a href="'+url+'page='+$i+'">'+$i+'</a></li>';
                }
            }
        }else{
            if(pagedata.current_page<=6){
                for($i=1;$i<=6;$i++){
                    if($i==pagedata.current_page){
                        str+='<li class="active"><a href="'+url+'page='+$i+'">'+$i+'</a></li>';
                    }else{
                        str+='<li><a href="'+url+'page='+$i+'">'+$i+'</a></li>';
                    }
                    str+='<li><a href="#">...</a></li>';
                }
            }else if(pagedata.current_page>6&&(pagedata.last_page-pagedata.current_page)>=4){
                str+='<li><a href="'+url+'page=1">1</a></li>';
                str+='<li><a href="#">...</a></li>';
                for ($i=pagedata.current_page-2;$i<=pagedata.current_page+2;$i++){
                    if($i==pagedata.current_page){
                        str+='<li class="active"><a href="'+url+'page='+$i+'">'+$i+'</a></li>';
                    }else{
                        str+='<li><a href="'+url+'page='+$i+'">'+$i+'</a></li>';
                    }
                }
                str+='<li><a href="#">...</a></li>';
            }else if((pagedata.current_page > 6) && ((pagedata.last_page-pagedata.current_page) <4)){
                str+='<li><a href="'+url+'page=1">1</a></li>';
                str+='<li><a href="#">...</a></li>';
                for ($i=pagedata.last_page-4;$i<=pagedata.last_page-1;$i++){
                    if($i==pagedata.current_page){
                        str+='<li class="active"><a href="'+url+'page='+$i+'">'+$i+'</a></li>';
                    }else{
                        str+='<li><a href="'+url+'page='+$i+'">'+$i+'</a></li>';
                    }
                }
            }
            str+='<li><a href="'+url+'page='+pagedata.last_page+'">'+pagedata.last_page+'</a></li>';
        }
        str+='<li><a href="#" aria-label="Next"><span aria-hidden="true">»</span></a></li>';
        _el.append(str);
    });
})
function getUrlArgStr(){
    var q=location.search.substr(1);
    if(q==''){
        return '';
    }
    var qs=q.split('&');
    var argStr='';
    if(qs){
        for(var i=0;i<qs.length;i++){
            if(qs[i].substring(0,qs[i].indexOf('='))!='page'){
                argStr+=qs[i].substring(0,qs[i].indexOf('='))+'='+qs[i].substring(qs[i].indexOf('=')+1)+'&';
            }
        }
    }
    return argStr;
}

function getUrlArgObject(){
    var args=new Object();
    var query=location.search.substring(1);//获取查询串
    var pairs=query.split(",");//在逗号处断开
    for(var i=0;i<pairs.length;i++){
        var pos=pairs[i].indexOf('=');//查找name=value
        if(pos==-1){//如果没有找到就跳过
            continue;
        }
        var argname=pairs[i].substring(0,pos);//提取name
        if(argname=='page'){
            continue;
        }
        var value=pairs[i].substring(pos+1);//提取value
        args[argname]=unescape(value);//存为属性
    }
    return args;//返回对象
}

var showtoastr = function(type,msg){
    // toastr.options = {
    //     "closeButton": true,
    //     "debug": false,
    //     "positionClass": "toast-bottom-right",
    //     "onclick": null,
    //     "showDuration": "1000",
    //     "hideDuration": "1000",
    //     "timeOut": "3000",
    //     "extendedTimeOut": "1000",
    //     "showEasing": "swing",
    //     "hideEasing": "linear",
    //     "showMethod": "fadeIn",
    //     "hideMethod": "fadeOut"
    // };
    // if(type=='success'){
    //     toastr.success(msg,'操作提示');
    // }else{
    //     toastr.error(msg,'操作提示');
    // }
    $.Toast("提示", msg, type, {
        stack: true,
        has_icon:true,
        has_close_btn:true,
        fullscreen:false,
        timeout:3000,
        sticky:false,
        has_progress:true,
        rtl:false,
    });
}

$.ajaxSetup({
    // headers: {
    //     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    // }
});


var ajaxsubmit = function(url,data,callback,onerror){
    $.ajax({
        type:'post',
        data:data,
        url:url,
        dataType:'json',
        success:function(data){
            console.log('执行结果',data)
            if(!data.error_code){
                //showtoastr('success',data.msg);
                callback(data);
                if(data.redirect){
                    window.location.href=data.redirect;
                }
                if(data.isrefresh){
                    setTimeout(function(){
                        location.reload();
                    },1000)
                }
            }else{
                showtoastr('error',data.msg);
                onerror && onerror();
            }

        },
        error:function(XMLHttpRequest, textStatus, errorThrown){
            var errors = eval('(' + XMLHttpRequest.responseText + ')');
            var msg = '';
            $.each(errors.errors,function(index,el){
                msg = el+'<br/>';
            })
            //showtoastr('error',msg);
        }
    })
}

$('.js-btn-logout').click(function(){
    var $this=$(this);
    var url = $this.attr('data-url');
    ajaxsubmit(url,{},function(data){

    })
})
$('body').on('hidden.bs.modal', '.modal', function () {
    $(this).removeData('bs.modal');
});
$(document).on('click','.js-btn-ajax-form',function(){
    console.log(123);
    var $this = $(this);
    var _form = $this.closest('form');
    var url = _form.attr('action');
    var refreshicon=$this.find(".glyphicon-refresh-animate");
    $this.addClass('disabled');
    refreshicon.removeClass('hidden');
    $.ajax({
        type:'post',
        data:_form.serialize(),
        url:url,
        dataType:'json',
        success:function(data){
            if(data.code==200){
                showtoastr('success',data.msg);
                if(data.redirect){
                    window.location.href=data.redirect;
                }
            }else{
                showtoastr('error',data.msg);
                $this.removeClass('disabled');
            }
            refreshicon.addClass('hidden');

        },
        error:function(XMLHttpRequest, textStatus, errorThrown){
            var errors = eval('(' + XMLHttpRequest.responseText + ')');
            var msg = '';
            $.each(errors.errors,function(index,el){
                msg += el[0]+'<br/>';
            })
            showtoastr('error',msg);
            setTimeout(function(){
                $this.removeClass('disabled');
                refreshicon.addClass('hidden');
            },3000);

        }
    })
    return false;
})

/**
 * 节流 仅第一次执行
 * @param fn
 * @param delay
 * @returns {Function}
 */
function throttle(fn, delay) {
    // 记录上一次函数触发的时间
    var lastTime = 0;
    return function() {
        // 记录当前函数触发的时间
        var nowTime = Date.now();
        if (nowTime - lastTime > delay) {
            // 修正this指向问题
            fn.call(this);
            // 同步时间
            lastTime = nowTime;
        }
    }
}

/**
 * 防抖，仅最后一次执行
 * @param fn
 * @param delay
 * @returns {Function}
 */
function debounce(fn, delay) {
    // 记录上一次的延时器
    var timer = null;
    var delay = delay || 200;
    return function() {
        var args = arguments;
        var that = this;
        // 清除上一次延时器
        clearTimeout(timer)
        timer = setTimeout(function() {
            fn.apply(that,args)
        }, delay)
    }
}

Array.prototype.removeByValue = function(val) {
    for(var i=0; i<this.length; i++) {
        if(this[i] == val) {
            this.splice(i, 1);
            break;
        }
    }
}